package main

import (
	"fmt"
	"sync"
)

// channel练习
// 启动一个goroutine，生成100个数发送到ch1
// 启动一个goroutine。从ch1中取值，计算其平方放到ch2中
// 在main中，从ch2取值打印出来
var wg sync.WaitGroup
func f1(ch1 chan int){
	defer wg.Done()
	for i:=0;i<100;i++{
		ch1 <- i
	}
	close(ch1)
}

func f2(ch1,ch2 chan int){
	defer wg.Done()
	// 方法1：从通道中取值的方法1
	for {
		x,ok:=<- ch1
		if !ok{
			break
		}
		ch2 <- x*x
	}
	close(ch2)
}

func main1() {
	a:=make(chan int,50)
	b:=make(chan int,100)
	wg.Add(2)
	go f1(a)
	go f2(a,b)
	wg.Wait()
	// 从通道中取值的方法2
	for ret:=range b{
		fmt.Println(ret)
	}
}